[iOS 10] SpriteKit の Tile Map をつかってミニゲームをつくってみた #2
前回の続きです。
キャラを表示して初期配置の処理まで作ります。
キャラクターを配置する
ペンギン2羽とランデブー時の画像を追加します。
キャラクターを画面に追加します。
追加したらノードの Name に名前をセットしておきます。
キャラクターを初期位置に配置します。ランデブー時の画像は非表示にしておきます。
#import "GameScene.h" @implementation GameScene { SKTileMapNode *_tileMap; SKSpriteNode *_emperor; SKSpriteNode *_gentoo; SKSpriteNode *_rendezvous; CGPoint _emperorIndex; CGPoint _gentooIndex; } - (void)didMoveToView:(SKView *)view { _tileMap = (SKTileMapNode *)[self childNodeWithName:@"tileMap"]; _emperor = (SKSpriteNode *)[self childNodeWithName:@"emperor"]; _gentoo = (SKSpriteNode *)[self childNodeWithName:@"gentoo"]; _rendezvous = (SKSpriteNode *)[self childNodeWithName:@"rendezvous"]; // エンペラーペンギンとジェンツーペンギンの座標をセット _emperorIndex = CGPointMake(5, 10); _gentooIndex = CGPointMake(8, 7); _emperor.position = [self convertPlayerPoint:_emperorIndex]; _gentoo.position = [self convertPlayerPoint:_gentooIndex]; // ランデブー画像の座標セットと非表示 _rendezvous.position = _gentoo.position; _rendezvous.hidden = YES; } -(CGPoint)convertPlayerPoint:(CGPoint)tileMapIndex { CGPoint playerPoint = [_tileMap centerOfTileAtColumn:tileMapIndex.x row:tileMapIndex.y]; return [_tileMap convertPoint:playerPoint toNode:_emperor.parent]; } - (void)swipe:(CMSSwipe)swipe { // ここにフリック処理 } @end
SKTileMapNode の centerOfTileAtColumn:row: メソッドでタイルの座標を取得することができます。
今回はここまで。
ではでは。